import java.util.ArrayList;
import java.util.LinkedList;


public class Compare {
public static void main(String[] args){
	int n = 500000;
	Object u=null;
	LinkedList<Object> lList = new LinkedList<Object>();
	ArrayList<Object> aList = new ArrayList<Object>();
	Object[] array = new Object[0];
	Object[] help;

	Long start = System.currentTimeMillis();
	for (int i=0; i<=n; i++){
		aList.add(aList.size(), i);
	}
	System.out.println("Einfügen von " +n+ " Elementen am Ende bei Array List " + (System.currentTimeMillis()-start));
	start = System.currentTimeMillis();
	for (int i=0; i<=n; i++){
		lList.add(lList.size(), i);
	}
	System.out.println("Einfügen von "+n+" Elementen am Ende bei Linked List " + (System.currentTimeMillis()-start));
	
	start = System.currentTimeMillis();
	for (int i=0; i<n; i++){
		help = array;
		array = new Object[i+1];
		for (int j =0; i<help.length; j++)
			array[j]=array[j];
		array[array.length-1]=i;
	}
	System.out.println("Einfügen von "+n+" Elementen am Ende beim Array " + (System.currentTimeMillis()-start));
	
	
	lList=new LinkedList<Object>();
	aList=new ArrayList<Object>();
	array=new Object[n];
	start = System.currentTimeMillis();
	for (int i=0; i<=n; i++){
		aList.add(aList.size(), 0);
	}
	System.out.println("Einfügen von "+n+" Elementen am Anfang bei Array List " + (System.currentTimeMillis()-start));

	start = System.currentTimeMillis();
	for (int i=0; i<=n; i++){
		lList.add(lList.size(), 0);
	}
	System.out.println("Einfügen von "+n+" Elementen am Anfang bei Linked List " + (System.currentTimeMillis()-start));
	start = System.currentTimeMillis();
	for (int i=0; i<n; i++){
		help = array;
		array = new Object[i+1];
		array[0]=i;
		if (array.length > 1)
		for (int j =1; i<help.length; j++)
			array[j]=array[j];
	}
	System.out.println("Einfügen von "+n+" Elementen am Anfang beim Array " + (System.currentTimeMillis()-start));
	
	start = System.currentTimeMillis();
	for (int i=0; i<=n; i++){
		u=aList.get(i);
	}
	System.out.println("Sequenzielles Lesen von "+n+" Elementen bei Array List " + (System.currentTimeMillis()-start));

	start = System.currentTimeMillis();
	for (int i=0; i<=n; i++){
		u=lList.get(i);
	}
	System.out.println("Sequenzielles Lesen von "+n+" Elementen bei Linked List " + (System.currentTimeMillis()-start));
	
	start = System.currentTimeMillis();
	for (int i=0; i<array.length; i++){
		u=array[i];
	}
	System.out.println("Sequenzielles Lesen von "+n+" Elementen beim Array " + (System.currentTimeMillis()-start));
	
	
	start = System.currentTimeMillis();
	for (int i=0; i<=n; i++){
		aList.remove(0);
	}
	System.out.println("Löschen von "+n+" Elementen bei Array List " + (System.currentTimeMillis()-start));

	start = System.currentTimeMillis();
	for (int i=0; i<=n; i++){
		lList.remove(0);
	}
	System.out.println("Löschen von "+n+" Elementen bei Linked List " + (System.currentTimeMillis()-start));
	
	start = System.currentTimeMillis();
	for (int i=n; i > 0; i--){
		help = array;
		array = new Object[i-1];
//		if (array.length > 1)	
			for (int j =1; i<help.length; j++)
				array[j-1]=array[j];
			
	}
	System.out.println("Löschen von "+n+" Elementen beim Array " + (System.currentTimeMillis()-start));
	if(u==null)
		System.out.println("Ponys");


}
}	
